﻿using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Linq;
using ArcGIS.Desktop.Core;
using System.Collections.Generic;

namespace CCTool.Scripts.UI.ProButton
{
    /// <summary>
    /// Interaction logic for TestWindow.xaml
    /// </summary>
    public partial class TestWindow : ArcGIS.Desktop.Framework.Controls.ProWindow
    {
        public TestWindow()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 处理拖拽进入事件
        /// </summary>
        private void PathTextBlock_DragOver(object sender, DragEventArgs e)
        {
            // 允许所有拖拽操作，让Drop方法来处理具体的数据格式
            e.Effects = DragDropEffects.Copy;
            e.Handled = true;
        }

        /// <summary>
        /// 处理拖拽进入事件
        /// </summary>
        private void PathTextBlock_DragEnter(object sender, DragEventArgs e)
        {
            // 允许所有拖拽操作，让Drop方法来处理具体的数据格式
            e.Effects = DragDropEffects.Copy;
            e.Handled = true;
        }

        /// <summary>
        /// 处理拖拽放下事件
        /// </summary>
        private void PathTextBlock_Drop(object sender, DragEventArgs e)
        {
            try
            {
                string path = null;

                // 调试：显示所有可用的数据格式
                var formats = e.Data.GetFormats();

                // 处理Windows文件拖拽
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
                    if (files != null && files.Length > 0)
                    {
                        path = files[0];
                    }
                }

                // 如果没有找到FileDrop格式，尝试所有可用的格式
                if (string.IsNullOrEmpty(path))
                {
                    foreach (string format in formats)
                    {
                        try
                        {
                            List<ClipboardItem> data = e.Data.GetData(format) as List<ClipboardItem>;
                            if (data != null)
                            {
                                string dataStr = data[0].CatalogPath;

                                path = dataStr;
                            }
                        }
                        catch (Exception ex)
                        {
                            System.Diagnostics.Debug.WriteLine($"处理格式 '{format}' 时出错: {ex.Message}");
                        }
                    }
                }

                // 如果获取到路径，设置到TextBlock
                if (!string.IsNullOrEmpty(path))
                {
                    ((TextBlock)sender).Text = path;
                }
                else
                {
                    ((TextBlock)sender).Text = "无法获取拖拽的路径信息！可用格式：" + string.Join(", ", formats);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"处理拖拽时发生错误：{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            e.Handled = true;
        }

        private void PathTextBox_DragEnter(object sender, DragEventArgs e)
        {
            // 允许所有拖拽操作，让Drop方法来处理具体的数据格式
            e.Effects = DragDropEffects.Copy;
            e.Handled = true;
        }

        private void PathTextBox_DragOver(object sender, DragEventArgs e)
        {
            // 允许所有拖拽操作，让Drop方法来处理具体的数据格式
            e.Effects = DragDropEffects.Copy;
            e.Handled = true;
        }

        private void PathTextBox_Drop(object sender, DragEventArgs e)
        {
            try
            {
                string path = null;

                // 调试：显示所有可用的数据格式
                var formats = e.Data.GetFormats();

                // 处理Windows文件拖拽
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
                    if (files != null && files.Length > 0)
                    {
                        path = files[0];
                    }
                }

                // 如果没有找到FileDrop格式，尝试所有可用的格式
                if (string.IsNullOrEmpty(path))
                {
                    foreach (string format in formats)
                    {
                        try
                        {
                            List<ClipboardItem> data = e.Data.GetData(format) as List<ClipboardItem>;
                            if (data != null)
                            {
                                string dataStr = data[0].CatalogPath;

                                path = dataStr;
                            }
                        }
                        catch (Exception ex)
                        {
                            System.Diagnostics.Debug.WriteLine($"处理格式 '{format}' 时出错: {ex.Message}");
                        }
                    }
                }

                // 如果获取到路径，设置到TextBox
                if (!string.IsNullOrEmpty(path))
                {
                    ((TextBox)sender).Text = path;
                }
                else
                {
                    ((TextBox)sender).Text = "无法获取拖拽的路径信息！可用格式：" + string.Join(", ", formats);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"处理拖拽时发生错误：{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            e.Handled = true;
        }
    }
}
